﻿//  --------------------------------
//  Copyright (c) PK Logix LLC. All rights reserved.
//  This source code is made available under the terms of the GNU General Public License version 2 (GPLv2)
//  http://www.codeplex.com/mvcclubsite/license
//  ---------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MVCClubSite.Model;

namespace MVCClubSite.IDAL
{
    /// <summary>
    /// Interface for Album DAL
    /// </summary>
    public interface IAlbums
    {
        /// <summary>
        /// Method to get all albums
        /// </summary>
        /// <returns>A list of albums</returns>
        IQueryable<Album> GetAllAlbums();

        /// <summary>
        /// Method to get public albums
        /// </summary>
        /// <returns>A list of albums</returns>
        IQueryable<Album> GetPublicAlbums();

        /// <summary>
        /// Method to get an ablum by an album ID
        /// </summary>
        /// <param name="id">ID of the album to return</param>
        /// <returns>An album business entity</returns>
        Album GetAlbumByID(int id);

        /// <summary>
        /// Method to insert or update an album
        /// </summary>
        /// <param name="album">Album to insert or update</param>
        void Save(Album album);

        /// <summary>
        /// Method to delete an album
        /// </summary>
        /// <param name="id">ID of the album to delete</param>
        void Delete(int id);
    }
}
